<?php

//Inclure la class d'accès à la base de données
include_once '../../DBAccess/DBAccess.php';

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of deperditionZenithalWindows
 *
 * @author Tony
 */
class AlgoZenithalWindows {
    
    public $ti; //Température intérieure
    public $te; //Température extérieure
    public $textra; //Extrapolation - supplément de régulation
    public $tc = 365; //Durée de la période de calcul
    
    public $totalDeperdition; //Déperdition totale des fenêtres zénithales
    
    
    
    function getTotalDeperditionZenithalWindow($house){
        
        //Récupération de la température extérieure selon la ville de résidence
        $this->te = DBAccess::getExTemp($house->idCity);
        
         //Récupération du supplément de régulation pour la température ambiante
        $this->textra = DBAccess::getTempExtrapolation($house->year);
        //Température exemple
        $this->ti = $house->roomsTemp;
        $this->ti = $this->ti + $this->textra;
        
        foreach ($house->zenithalWindows as $window) {
            
            $this->totalDeperdition += ($this->ti - $this->te) * $this->tc * $window->area * $this->getCoef($window) * 86400 / (1000000 * $this->getSRE($house));
            
        }
        
        return  $this->totalDeperdition;
        
    }
    
    //Calcul du coéficient d'une fenêtre zénithale 
    // par défaut 1
    public function getCoef($window){
        
        return 1;
    }
    
    //Fonction pour le calcul de la surface de référence énergétique (SRE)
    function getSRE($house) {
        switch ($house->idShape) {
            // Forme carré et rectangle
            case 1:
                $this->totalSurface = $house->M1 * $house->M1 * $house->floors;
                break;
            case 2:
                $this->totalSurface = $house->M1 * $house->M2;
                $this->totalSurface *= $house->floors;

                break;
            //Forme en L
            case 3:
                $this->totalSurface = ($house->M1 * $house->M4) + ($house->M2 - $house->M4) * $house->M3;
                $this->totalSurface *= $house->floors;
                break;
            //Forme en U
            case 4:
                $this->totalSurface = ($house->M1 * $house->M6) + ($house->M4 * $house->M5) + ($house->M2 - $house->M6) * $house->M3;
                $this->totalSurface *= $house->floors;
                break;
            //Forme rect. décalé
            case 5:
               $this->totalSurface = ($house->M1 * $house->M2) + $house->M6 * ($house->M7 - $house->M4) + ($house->M4 * $house->M5);
                $this->totalSurface *= $house->floors;
                break;
            //Forme en T
             case 6:
                $this->totalSurface = ($house->M1 * $house->M2) + ($house->M4 * $house->M5);
                $this->totalSurface *= $house->floors;
                break;
            
            default :
                echo 'Forme de la maison non connue....';
                break;
        }

        return $this->totalSurface;
    }
    
}
?>